// Problem 056: Powerful digit sum
// A googol (10^100) is a massive number: one followed by one-hundred zeros; 100^100 is almost unimaginably large: one followed by two-hundred zeros. Despite their size, the sum of the digits in each number is only 1.
// Considering natural numbers of the form, a^b, where a, b < 100, what is the maximum digital sum?

package main

import (
	"fmt"
	"math/big"
)

func p056() {
	z := big.NewInt(0)
	max := 0
	for i := 2; i < 100; i++ {
		a := big.NewInt(int64(i))
		for j := 2; j < 100; j++ {
			b := big.NewInt(int64(j))
			z.Exp(a, b, nil)
			sum := 0
			d := []byte(z.String())
			for _, c := range d {
				sum += int(c) - 48
			}
			if sum > max {
				max = sum
			}
		}
	}
	fmt.Println("Prolem 056:", max)
}
